package com.jh.rq;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * @author Li
 * @Date 2023/4/20 16:20
 */
public class StreamDemo4 {
    /**
     * Stream流的收集操作:
     * 工具类Collectors提供了具体的收集方式
     * public static <T> Collector toList​()：把元素收集到List集合中
     * public static <T> Collector toSet​()：把元素收集到Set集合中
     * public static  Collector toMap​(Function keyMapper,Function valueMapper)：把元素收集到Map集合中
     * @param args
     */
    public static void main(String[] args) {
        ArrayList<Integer>list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add(i);
        }
        list.add(10);
        list.add(10);
        list.add(10);
//        搜集集合中为偶数的的元素
        List<Integer> list1 = list.stream().filter(number -> number%2==0).collect(Collectors.toList());
//       会去重
        Set<Integer> list2 = list.stream().filter(number -> number%2==0).collect(Collectors.toSet());
        System.out.println(list1);
        System.out.println(list2);


        //    toMap​
        /**
         * 创建一个ArrayList集合，并添加以下字符串。字符串中前面是姓名，后面是年龄
         * “zhangsan，23”
         * “lisi，24”
         * “ wangwu，25”
         * 保留年龄大于等于24岁的人，并将结果收集到Map集合中，姓名为键，年龄为值
         */

        ArrayList<String> list3 = new ArrayList<>();
        list3.add("王明,30");
        list3.add("赵敏,26");
        list3.add("徐倩,23");
        list3.add("张强,25");

        Map<String,Integer> map = list3.stream().filter(s ->{
            String s1 = s.split(",")[1];//表示年龄这列
            return Integer.parseInt(s1)>=25; //返回年龄大于25岁的
            /**
             * 用map搜集
             * 姓名为键，年龄为值，要将字符串类型的年龄转换为整型存入map集合中（Integer.parseInt()）
             */
        }).collect(Collectors.toMap(s -> s.split(",")[0],s1->Integer.parseInt(s1.split(",")[1])));
        System.out.println(map);
    }




}
